color-scheme

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 ⁨2022 年 1 月⁩起,它已在各种浏览器中可用。

color-scheme CSS 属性允许元素指示它可以舒适地渲染的配色方案。用户代理会更改 UI 界面以下方面以匹配所使用的配色方案:

  • 画布表面的颜色。
  • 滚动条和其他交互 UI 的默认颜色。
  • 表单控件的默认颜色。
  • 其他浏览器提供的 UI 的默认颜色,例如“拼写检查”下划线。

组件作者必须使用 prefers-color-scheme 媒体功能来支持其余元素的配色方案。

操作系统配色方案的常见选择是“浅色”和“深色”,或“日间模式”和“夜间模式”。当用户选择这些配色方案中的一种时,操作系统会调整用户界面。这包括表单控件滚动条以及CSS 系统颜色的使用值。

试一试

color-scheme: normal;
color-scheme: dark;
color-scheme: light;
<section class="default-example container" id="default-example">
  <textarea id="example-element">Text Area</textarea>
</section>
#example-element {
  width: 80%;
  height: 50%;
}

语法

css
color-scheme: normal;
color-scheme: light;
color-scheme: dark;
color-scheme: light dark;
color-scheme: only light;

/* Global values */
color-scheme: inherit;
color-scheme: initial;
color-scheme: revert;
color-scheme: revert-layer;
color-scheme: unset;

color-scheme 属性的值必须是以下关键字之一。

normal

表示该元素可以使用页面的配色方案设置进行渲染。如果页面没有设置配色方案,则该元素将使用页面的默认颜色设置进行渲染。

light

表示该元素可以使用操作系统浅色配色方案进行渲染。

dark

表示该元素可以使用操作系统深色配色方案进行渲染。

only

禁止用户代理覆盖元素的配色方案。

通过在特定元素或 :root 上应用 color-scheme: only light;,可用于关闭 Chrome 自动深色主题导致的颜色覆盖。

正式定义

初始值normal
应用于所有元素和文本
继承性
计算值同指定值
动画类型离散

正式语法

color-scheme = 
normal |
[ light | dark | <custom-ident> ]+ && only?

示例

声明配色方案偏好

要让整个页面采用用户的配色方案偏好,请在 :root 元素上声明 color-scheme

css
:root {
  color-scheme: light dark;
}

要让特定元素采用用户的配色方案偏好,请在这些元素上声明 color-scheme

css
header {
  color-scheme: only light;
}
main {
  color-scheme: light dark;
}
footer {
  color-scheme: only dark;
}

除了上述 CSS,还要在任何 CSS 样式信息之前,在 <head> 中包含 <meta name="color-scheme"> HTML <meta> 标签,以告知用户代理首选的配色方案,从而有助于防止页面加载时出现不必要的屏幕闪烁。

基于配色方案的样式

要根据配色方案偏好设置元素样式,请使用 prefers-color-scheme 媒体查询。下面的示例通过 color-scheme 属性使整个页面采用浅色和深色操作系统配色方案,然后使用 prefers-color-scheme 为这些配色方案中的单个元素指定所需的前景和背景颜色。

css
:root {
  color-scheme: light dark;
}

@media (prefers-color-scheme: light) {
  .element {
    color: black;
    background-color: white;
  }
}

@media (prefers-color-scheme: dark) {
  .element {
    color: white;
    background-color: black;
  }
}

或者,使用 light-dark() <color> 函数,以更紧凑的代码结构为不同的配色方案设置前景和背景颜色。

css
:root {
  color-scheme: light dark;
}

.element {
  color: light-dark(black, white);
  background-color: light-dark(white, black);
}

规范

规范
CSS 颜色调整模块级别 1
# color-scheme-prop

浏览器兼容性

另见